package com.base.cn.platform.os.entity.exam.record;

import com.base.cn.platform.os.common.mybatis.BaseEntity;
import com.base.cn.platform.os.common.mybatis.SqlExclude;
import com.base.cn.platform.os.common.utils.StringUtils;
import com.base.cn.platform.os.entity.exam.question.ExamQuestion;
import com.base.cn.platform.os.entity.exam.question.QuestionScoreJson;
import com.base.cn.platform.os.entity.exam.template.ExamQuestionTemplate;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import lombok.Data;

import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.util.Map;

/**
 * 试卷答题记录对象
 *
 * @author s.li
 * @date 2018/12/07
 */
@Data
public class ExamQuestionRecord extends BaseEntity {
    /**考试记录ID*/
    private BigDecimal examRecordId;
    /**试题记录使用类型，1考试，2作业，3随堂练习*/
    private Integer useType;
    /**考试类型 1.真题测验 2.考点练习 3.错题练习 4.自由组卷 5随堂练习*/
    private Integer type;
    /**试卷ID（真题考试）*/
    private BigDecimal examId;
    /**答题用户ID*/
    private BigDecimal userId;
    /**试题类型ID*/
    private Integer templateId;
    /**试题模板记录ID*/
    private BigDecimal templateRecordId;
    /**试题ID*/
    private BigDecimal questionId;
    /**试题知识点ID串*/
    private String loresetPointIds;
    /**试题分数*/
    private Integer questionScore;
    /**用户得分*/
    private Integer userScore;
    /**用户提交的答案*/
    private String userAnswer;
    /**是否包含有简答题，0不包含，1包含*/
    private Integer special;
    /**是否批阅：1.已批阅，2.未批阅*/
    private Integer marked;
    /**答错次数，（用于查询错题练习）*/
    private int errorNum;

    /**
     * status 是否已做：1.已做，2.未做
     */

    //================================
    /**试题分数JSON串*/
    @SqlExclude
    private String scoreJson;
    /**试题答案*/
    @SqlExclude
    private String questionAnswer;
    /**试卷记录*/
    private ExamRecord examRecord;
    /**试题用户答案对象*/
    private AnswerJson userAnswerJson;
    /**试题答案对象*/
    private AnswerJson questionAnswerJson;
    /**试题类型模板排序号*/
    private int tempSort;
    /**试题类型排序号*/
    private int questionSort;
    /**分数JSON对象*/
    private QuestionScoreJson questionScoreJson;
    /**试题对象*/
    private ExamQuestion examQuestion;
    /**试题类型模板*/
    private ExamQuestionTemplate examQuestionTemplate;
    /**知识体系数据*/
    private Map<String, String> loresetDataMap;
    /** 移动端试题下标*/
    private int mobileIndex;
    /**PC试题下标*/
    private int webIndex;
    /**试题类型模板中文下标*/
    private String strTempIndex;
    /**试题类型名*/
    private String templateName;
    /**移动端的类型*/
    private String mobileTemplateName;

    /**
     * 格式分数
     */
    public void formatJson(){
        String _scoreJson = this.getScoreJson();
        if(StringUtils.isNotEmpty(_scoreJson)){
            Gson gson = new GsonBuilder().create();
            try {
                _scoreJson = URLDecoder.decode(_scoreJson,"utf-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            this.setQuestionScoreJson(gson.fromJson(_scoreJson,QuestionScoreJson.class));
        }
    }
}
